Use font-lock-preprocessor-face as the basis for directive faces
[emacs] When the first line is a txn, include it in ledger-sort-buffer

Without this fix, ledger-sort-region tends to skip the first
transaction when sorting a region or the entire buffer.
[emacs] Use markers instead of raw positions to make cleaning work better

Sometimes cleaning a buffer would leave the end of the buffer uncleaned,
because the end position would be moved along the way. This commit makes
the corresponding code use markers instead, which track the changes in
the buffer, and therefore ensure that the entire buffer is acted upon.
[emacs] Parse transaction leading lines more robustly

This began with noticing that the code didn't support the (ugly, yet
valid) case of a tab between the date and txn description. I took the
opportunity to make the regexes more consistent along the way.
[emacs] Set comment-start to ";" so that comment-dwim works
[emacs] Fix byte compilation warnings
[emacs] Simplify and tidy up ledger-occur

Introducing a proper minor mode saves a lot of the hand-rolled fiddling
about, like managing the overlay lifecycle and the modeline.
[emacs] Don't use setq-local, which only appeared in Emacs 24.4

/cc @enderw88
[emacs] Declare when we're using cl
[emacs] Fix more byte compilation and other layout issues
[emacs] Turn ledger-occur-mode off via a separate command, and allow refreshing
Document changes to the narrowing functionality in ledger-occur
[emacs] Restore toggle behaviour of ledger-occur command, for menu users