Compound Indexes

Fixes #761 ~~, depends on https://github.com/doctrine/mongodb/pull/154~~

**Exceptions** I have left Query::getUnindexedFields untouched and adjusted Exception Message (instead of showing unindexed fields there's a list of used ones. I was thinking about comparing existing indexes with fields from query and suggesting developer fields to add/remove to query to match index requiring least changes but finally gave up on this - however if you think it's good idea I'll implement it)

TODO:
- [x] adjust index checking
- [x] tests (without getUnindexedFields thing yet)
- [x] adjust thrown exceptions
- [x] add check for [Sort Order](http://docs.mongodb.org/manual/core/index-compound/#sort-order)
- [x] document CompoundIndex
- [x] document allowLessEfficientIndexes in @Document annotation

AFTER REVIEW:
- [ ] remove ``allowLessEfficientIndexes`` feature (including docs)
- [ ] get index information from ``ClassMetadata`` instead of DB (code & docs)
- [ ] consider text and geospatial indexes
- [ ] consider index intersection (https://github.com/doctrine/mongodb-odm/pull/812#issuecomment-45268453)

cc @dwieeb
Just found out why, see ``testRequireIndexesOnSortException`` in ``RequireIndexesTest`` - if we don't query for fields but we won't to sort result we need to return ``$index`` as possible match. I've refactored ``IndexChecker`` a bit to get this logic out of here