Wired up proper snippet resolution.

The SnippetManager looks for snippets in all the appropriate config roots,
allowing per-project, per-workspace, and global 'user' snippets. It also looks
for 'stock' snippets.

Eventually, I'll probably add support for a list of paths to search so that a
user can git clone a snippet database somewhere and then configure snippet mode
to add that to the mix.

Snippets also now must live in a mode-name.snip file, which can %include other
snip files from the same directory. So you can have a c-like.snip file with
snippets for all c-like languages, or something like that.

This allows us to only read the snippets for a given mode, when that mode is
first loaded, rather than having to read the entire snippet database which
would be necessitated by our previous approach of having a .snip file indicate
which modes to which it was applicable in a %modes line.