Search: refactor api view
Search: refactor api view

Mainly this was done to allow us support searching on
different versions of subprojects.
Currently, we assume we search the same version for all subprojects.

- _get_all_projects_data and _get_all_projects
  were merged into just one method.
  And instead of returning a list of projects we return a dictionary of project slugs mapped to a VersionData object.
- There is some duplication in .com.
  `_has_permission` and `_get_subproject_versions_queryset`
  are overridden in .com.
- ProjectData was renamed to VersionData since it has more attributes
  related to a version than a project.

rtfd/readthedocs.org,rtfd/readthedocs.org,rtfd/readthedocs.org,rtfd/readthedocs.org