Allow any identifier in aggregation group operator
Allow bulkInsert with empty enumerator and ensure that each bulk has at least one document to insert.

When the enumerator was empty or the document was larger than the maximum bulkByteSize then MongoDB returned the error DatabaseException['Message contains no documents' (code = 13066)]
Added 2D Spherical and Hashed index types
Disabled unit test for inserting invalid point into 2dsphere index, since inserting it doesn't fail under Mongo2.2
fix union type parsing in handler macros

there was a mistreatment of associativity of type options in macros.
test case was expanded so it's type is no logner trivial and failed with
previous implementation.
handler macros: recursive structures
macro handlers: pull in implicit handlers for ADT

if there are handlers in implicit scope for types used in ADT
they will be used, otherwise all handlers will be generated
Merge pull request #84 from edofic/macros

Macros: recursive structures support, union type bugfix, implicit handlers for ADT
Merge pull request #81 from ornicar/aggregationGroup

Allow any identifier in aggregation group operator
Merge pull request #82 from MarkvanderTol/empty_enumerator

Allow bulkInsert with empty enumerator
Merge pull request #83 from MarkvanderTol/indextypes

Added 2D Spherical and Hashed index types