Features rewrite
This merge request will refactor a lot of code and move things around. Slides describing the changes are available here and were discussed on the iDQ call on March 14, 2018.
While not everything in this merge is perfect or completely implemented, the consensus was to review/merge it sooner rather than later and then patch the missing parts as we can.