Allow customization of the UltiSnips search path on a per-buffer basis.

After talking to SirVer about how to customize the UltiSnips search path
on a project basis, he suggested the technique implemented by this
patch.  It allows you to push something like the following into your
.lvimrc:

    let b:UltiSnipsSnippetDirectories = ["UltiSnips", "Git"]

Where "Git" would contain snippets customized for working on Git in this
example.
Merge branch 'js/customize-ultisnips-search-path'
Adjust support for buffer-local UltiSnipsSnippetDirectories:

- Add public entry point SetLocalSnippetDirectories() to hide the
  details of the underlying mechanism from .lvimrc files, in case
  we get a better way to do this in the future.

- Suggest a directory layout in the comments of
  SetLocalSnippetDirectories().  Since the directories listed
  in g:UltiSnipsSnippetDirectories are checked only for files
  in their top-level, it seems reasonable to use subdirectories
  of UltiSnips/ that are project-specific.

- Add paranoia check for missing b:SavedUltiSnipsSnippetDirectories
  when restoring global setting.

- Split into two autocmd functions to avoid boolean parameter.