refactor devices into package and allow dynamic loading of arbitrary devices
completed major refactoring of device code into package structure
Merge remote-tracking branch 'origin/master'