WIP: New Publishing controls on Unit page.

STUD-1707

Known issues:

1. "has_changes" is a bit buggy at the moment. The best way to see "has_changes" change state is to add or delete components on the page. Editing a property of a component on the page that is already published does not change "has_changes"-- Ben has a PR with this fix.
2. The disabled colors for "View Published Version" and "Preview Changes" are not consistent.
3. "Preview" functionality does not work on sandbox-- Feanil to work on next week
4. "Discard changes" is not complete-- will be finished as a separate story.

Notes/Questions:

Sandbox with test course--  http://studio.cahrens.m.sandbox.edx.org/course/slashes:foo+foo+foo
I now see that it is a little odd to use ```json.dumps``` on the server side in some cases, but on the client in others. My leaning is now to pass the actual object to the template and to let it decide. This will allow the template to dig into the object if it needs to, and it can call ```json.dumps``` when it wants to. If the template needs to share the string representation it can make a variable. Does that make sense as a convention?