Stackable states

States are now stackable. Instead of just activating them, you push/pop them.
If two states are stacked on top of each other, the state on top takes
precedent, but the state below shows through for flags and values where the top
state does not care.

Signed-off-by: Casey Dahlin <cdahlin@redhat.com>
Allow modifying the active state

This reduces the risk of leaking an abstraction, and with enhancements made
recently to the state API, this is fairly easy to do.

Signed-off-by: Casey Dahlin <cdahlin@redhat.com>