Add support for custom analyzers

A user can specify the custom analyzer from the calling class by setting the `__analyzer__` variable. If it isn't found then it will default to a basic StemmingAnalyser