Only show base filenames in fish completions
Update backlinks in O(n) time instead of O(n^2)
This method iterates through the entire getPages() array twice: on the
first pass it creates a table of backlinks and on the second pass it
checks each page's fname for an entry in the backlinks table.
This is much better than the quadratic time implementation that iterated
through the entire getPages() array for each entry in getPages().
Use nim's array bound operator
Only write files when backlinks have actually changed
This prevents files having their last modified timestamp constantly
Add shell completion files
Use 'func' for procs with no side effects
This can help the compiler optimize.