Enable rubocop

This setup of rubocop is very lenient to begin with. Some leniencies are established in .rubocop.yml and other times rules are disabled inline in the files. Over time, more rules should be enabled.

This also adds rubocop to the default rake task.

I haven't gone back and fully reviewed everything myself, but I plan to this week. It's also probably better to get more eyes on this as early as possible given how big the change is.

I also should note that the bulk of these conversions were done by Rubocop's auto-converter.

Addresses #1586.
Style/ModuleFunction: Use module_function instead of extend self.

If my understanding is correct, module_function would have to be declared under all methods in this module, including private methods. I don't have a strong opinion either way. Thoughts?