Further core class refactor

This is part of #3174.

Merged ([conflicts resolved](https://github.com/woothemes/woocommerce/commit/a09ebc9ccaceb6defad5b2ed99655c95ffb8d3df)) in the changes that I've started in #3283.

Gonna refactor the core class some more via this ongoing pull request.