Refactor suggest implementation

The suggest implementation has been re-worked to more closely resemble the query implementation, and support for phrase suggesters has been added.