Made indexing tags substantially faster. Also added "find related" documents based on tags

Two major improvements:

1. Made indexing tags substantially faster:
- Replaced map/reduce with Mongo aggregation. This makes finding the count of tags at least 10x faster.
- Changed code so it only does the aggregation when it needs to. That is, it won't index tags on every document creation, just when there is a new document (or new tags), and the tag list is asked for.

2. Added "find related" ability based on how many tags match. This is easily limited, and you can inject your own filters before matching. You can find related based on a single document, or based on a series of documents.

I'm not sure if this project is stagnant. I hope it isn't. It would be nice to have a gem that supported most of what "acts_as_taggable_on" would do for Mongoid projects.