Split the code into various files.

This unfortunately makes the plugin un-squishable, but on the other hand will allow us to implement #1 - splitting Storage code into a separate file / class. And generally the overall code looks more organized this way.