Added support for `${N}` tabstops
Moved `selectToBoundaryPosition()` out from `SnippetExpansion` class

This gives developers more control and freedom for re-using snippets logic in their packages: snippet expansion will simply replace selected text with snippet instead of forcibly selecting prefix for current caret position
Generic method to insert snippet: `require('snippets').insert(text or snippet)`