Create resource factory for instantiating resources with minimal code duplication
Fix EventEmitter application to Resource
Apply new resource ctor to APIs
Remove utils module
Merge branch 'abstract-resource'

* abstract-resource:
  Remove utils module
  Apply new resource ctor to APIs
  Fix EventEmitter application to Resource
  Create resource factory for instantiating resources with minimal code duplication