Add autoloads, make code more concise & idiomatic

- Use define-derived-mode to declare nix-mode
- Use autoloads to ensure nix-mode is usable (and enabled) without needing `require`
- Use set + make-local-variable instead of longer 2-step equivalent
Share code between scopedImport and import

In addition to reducing duplication, this fixes both import from
derivation and import of derivation for scopedImport
findFile: Realise the context of the path attributes
Drop ImportError and FindError

We're not catching these anywhere.
Fix bogus warnings about dumping large paths

Also, yay for C++11 non-static initialisers.