New save flow

This makes the save buttons on WidgyPages specific to the page's status (draft or published) and automatically manages commit status based on these buttons.

### Without review queue

- Creating a new page: Save
- Draft: Save as Draft (saves mezzanine content), Publish (saves, makes a commit)
- Published: Publish changes (saves, commits)

### with review queue
- Create a new page: Save
- Draft: Save as Draft, Submit for Review, Publish
- Published: Submit for Review, Publish changes

![image](https://cloud.githubusercontent.com/assets/421710/3959152/0b7ee65a-2728-11e4-8cfe-da34d3bc5190.png)

Depends on #240. Still needs code clean up and tests.
@rockymeza I know this has been merge. I just want to make a point here, I don't like casting things to boolean in a if. It leads to mistake like the `if not instance.pk`. I feel like everything in a `if X` should be boolean. Python is generally a strong typed language, but this is one of its feature I don't like.

Languages with strong typing only accept booleans:
~~~
$ ocaml
        OCaml version 4.00.1
# let x b = if b then "yes" else "no";;
val x : bool -> string = <fun>
# if 1 then "yes" else "no";;
Error: This expression has type int but an expression was expected of type
         bool
# ^D
$ ghci                                                                                                                 -- INSERT --
GHCi, version 7.6.3: http://www.haskell.org/ghc/  :? for help
Prelude> let x b = if b then "yes" else "no"
Prelude> :type x
x :: Bool -> [Char]
Prelude> if 1 then "yes" else "no"

<interactive>:4:4:
    No instance for (Num Bool) arising from the literal `1'
    Possible fix: add an instance declaration for (Num Bool)
    In the expression: 1
    In the expression: if 1 then "yes" else "no"
    In an equation for `it': it = if 1 then "yes" else "no"
~~~

Maybe here what we want is:
```python
future = False
for commit in obj.root_node.get_history_list():
    if not commit.is_published:
      future |= True
```

I dunno, this might just be bike shedding.

cc @gavin