use CALayer rather than a view hierarchy

CALayer is more performant and fixes the "double opacity" issue of the currently selected color. Also, migrate to dot notation for some things