Add nested document support

Thanks Martijn!
Time rewrites
ProfileQuery and ProfileFilter should maintain their own name/details

By moving the name/detail logic inside the query and filter, we can keep
a consistent name even when the underlying query has
been rewritten (e.g. FuzzyQuery instead of the rewritten BoolQuery)
Add profile endpoint