Refactoring: Fixed autoloading issues and workarounds by doing dependency requirement the "Rails Way".
- Removed unneeded `require`s
- Replaced needed `require`s with `require_dependency`
- Replaced `load` with Concers
- Kept gem and core `require`s
Read more about ``nrequire_dependency here: http://guides.rubyonrails.org/autoloading_and_reloading_constants.html#require-dependency
Read more about Concerns here: http://api.rubyonrails.org/v5.1/classes/ActiveSupport/Concern.html