Merge 3.0 "AdapterAbstraction" branch into master

This is an API-breaking change from 2.0. To continue using v2.x, you'll need to point to the last [2.0 tag](https://github.com/larsacus/LARSAdController/tree/2.1.1).