use Schema::throw_exception

Zone updated to use throw_exception where appropriate. Some additional tests added and Role::Errors updated to add extra convenience methods used by updated Zone.