Adds robust exclude support

This request will exclude the appropriate fields from embedded documents/document arrays, and populated documents. The exclude syntax remains the same, except delving into objects with dot notation (e.g. exclude='customer.purchases') is supported.

This was much more complicated than i originally thought, so there may be some edge cases I haven't covered. Not sure how to update the Readme, as the feature is pretty much the same, but better!