Add Upgrade API

I'm putting this up now to get early feedback.  I am still working on testing, but the implementation is basically there.  I've also attempted to add docs (and modify optimize docs as necessary).

This branch does the following:
* Add the new API at the rest layer, being backed by the optimize API with upgrade flag, and segments api to find upgrade status.
* Add `upgrade` flag to optimize API, and deprecate `force` flag (will remove in master)

closes #7884
I'm pretty sure not having a Pair class was intentional because it forces you to write one of these classes and document what the fields mean.  Probably should expose the fields with public methods instead of make them public - another Java-ism.