Overlays

This supersedes @aadsm's work on overlays (https://github.com/montagejs/montage/pull/1221). I have cherry-picked those commits onto current master and fixed merge conflicts, as well as fixing a number of failing specs.