Changed all enableModule() and disableModule() to protected.
Fixed bug in which disableModule() happens after module is already
disabled, making ensureEnabled() throw errors in disableModule().
Added solenoids to resolve #11