Use query for token completion

We should use a query for token completion instead of just loading all possible forms of tokens into memory at init (i.e. this is the branch which will help alleviate the crazy long startup time).

:notebook_with_decorative_cover: You must run `pod update` to use this branch as it includes pods not in the master branch.

## To do
* [x] Update code to reflect `-getRelatedTagsForTagWithName:` now returning an array of `OPFTag` objects.
* [x] Add a proper query for finding users matching entered text.
* [x] Add a proper query for finding users when no token text has been entered text.
* [x] Update the tag suggestion to decrease the amount of shown tags as more tags are entered.
* ~~[ ] Change so token being inputted isn’t being used as a keyword but rather a tag.~~ **Will fix on master instead as this branch is holding up @gothma’s work.**
* [x] Fix the database race condition.