Overhaul DOM and style customization

This is my first attempt at improving the customizability of typeahead.js UI. Some of the highlights:

* Rather than relying on the dropdown menu typeahead.js builds, you can now specify any DOM element to be used as the results container. #875

* You can do the same thing with the hint, but I can't think of any reason why someone would want to do that.

* If you're using a custom element for the results container, it's possible to make non-suggestion elements selectable.

* It's also possible to make elements within the headers and footers of datasets selectable.

* All class names used by typeahead.js are now configurable. #850

* The amount of inline CSS that's applied has been reduced. I still have work to do on this front though as ideally if you specify your own hint and your own results container, no DOM changes will be made and no inline styles will be applied.

There's a bunch of other stuff this branch enables – pretty much everything in the [DOM and Style Customization](https://github.com/twitter/typeahead.js/issues?milestone=13&state=open) milestone will be addressed by this branch.

As always, if you have any feedback, let me know. Over the next couple of weeks, I'll be polishing this branch up and updating the docs so watch this PR if you want to be notified of changes.