Rebased Raynos's lightweight RCSS

CC: @Raynos @chenglou

We should do an NPM publish after this is merged.
deep-merge is actually not a good solution. We should probably use `require('deep-extend')`.