make DeviceManager and RuleEngine in GuhCore private

This helps to have a cleaner separation between modules and have a
place to do inter-module checks before modifying data (e.g.
cascade deleting rules when a device is deleted etc)