Expose the `LanguageTools` extension module

`ace.require` now returns an instance of `LanguageTools` when called with `ace/ext/language_tools`; this is symmetric to the javascript and provides a clean way to incrementally expose more ace extensions as Dart classes and avoids crowding the top-level namespace.

I renamed `CodeCompleter` to `AutoCompleter` since this feature is always referred to as `autocompletion` in the javascript, and I made it a class that the `_AutoCompleterReverseProxy` implements so that the user 'owns' the object and can `dispose` of it if they wish.  This is also symmetric with the rest of `ace.dart`.

No deferred loading :)  I think that is how we might want to implement `ace.require` for the `pure` Dart implementation, but we'll re-visit that if and when we get there.

Basic test coverage + autocomplete example updated.  Some other small miscellaneous cleanups.

@devoncarew please have a look

closes #42