Analysis

Contains:
- Stripping analysis from dock.py to analysis.py
- Stripping user extent from dock.py to extent.py
- IF API
- Update IF metadata to use `subcategories` not `subcategory` and return a list to make it standard with the other

Passed all test for safe_qgis (except the hash check for image)