Action results

*Action Results* in the State
==

An Action can now be `Fail()`'ed or `Complete()`'ed, and the relevant output will be stored in the `actionresults` collection in the juju db in mongo.

The reason, or the output will be written to the `ActionResult`, along with the details of the `Action`.

The prefix of the `ActionResult.Id()` will also encode the `Action.Id()` from which it was generated (which itself encodes the `Unit.globalKey()` that the `Action` was queued for.
Why is a slice being passed to the second arg of append when there's only Op being added? Can't this be:

```go
return a.st.runTransaction(append(ops, txn.Op{
                C:      a.st.actions.
                C:      a.st.actions.
                Id:     a.doc.
                Id:     a.doc.Id,
                Remove: true,
}))
```