improved performance and added some new features

Improved performance by various database optimisations.
Implemented the option to select what fields to search in.
Implemented the option to select what part of the activity data the api should return
Why not use `Q(start_planned__year=f)`, it's a lot cleaner.