Merge 4 0 stable into master

Merging `4-0-stable` into `master`. `master` should now be a cleaner superset of `4-0-stable`, so any changes that need to go into both should target `4-0-stable` first, then we can just merge `4-0-stable` into `master`.

/cc @rafaelfranca