Make Volatility into a type

Instead of a simple uint, we make it a type.
Adds fallback error handler to Act

Also move the type definition for ErrorHandler up to increase
readability.
Moves Action type to a new file for readability
Change visibility of Cache method on Actions

Make private. It's only really used by Act. If we need to make it
public later, we can.
Add Test for Act

Big test, gets coverage up over 90%, where the only code left uncovered
are some edge cases involving some error cases. We can update the
tests to cover these cases later.
Adds TODO concerning test coverage