Don't suggest non-directories when tab completing cd

Fixes #1059
vi bindings: add CTRL-C handler in default mode

There is no CTRL-C handler for the default mode in the vi bindings. This makes it difficult to say "never mind" and start a new command line like you can do in bash's vi mode. 

There were CTRL-C handlers for insert and visual modes that go back to default mode, but nothing happens in default mode. I copy-pasted the CTRL-C handler from the default key bindings file.
Remove some more dead code
Fix to swallow BOMs in sourced files

Fixes #1518
Allow # within string tokens

This means that # must be the first character of the string
to start a comment, in line with other shells

Fixes #953
Fix tests on FreeBSD

FreeBSD throws errors if you pass flags like O_WRONLY to mkostemp.
Pass only O_CLOEXEC.
BOM test should only run in UTF-8 locales
Disable printf %a test since it has different output on FreeBSD

Fixes #1139
Disallow backgrounding in conditionals and before and/or bool statements

Fixes #1136
Clean up some job status messages

Stop printing anything for jobs terminated via ^C.
Don't list the job number if it's the only job.

Fixes #1119
Remove an incorrect comment
complete: recognise -w short option for --wraps

Closes #1793.
Adds heroku toolbelt completions
Changes tabs to 4 spaces per fish style
Fixes typo on line 86
Fix to avoid shortening the command line on tab completions.

This prevents cases like `cd /usr/e` from tab-completing to
`cd /usr/` (which is the shared prefix of the tab completions).

Things are still sort of confusing with fuzzy matching, e.g.
with files like this:

    foo1bar
    foo2bar

Then ba<tab> will replace the token with foo. That's surprising,
but not new to this fix.

Fixes #1727
Align `fg` and `bg` commands: With no parameters `fg` prints the help.
`bg` on the other hand only prints `no job`. Now both print `no job`.