Feature/tabularinterface

makes a pseudo-interface (via [this blogpost](http://metabates.com/2011/02/07/building-interfaces-and-abstract-classes-in-ruby/) ) for Spreadsheet and Table, closing #54.

this set of commits also makes `protected` most of the methods on Spreadsheet and Table that aren't specified in the interface; the exceptions -- still-public, class-specific methods -- are `Table#add_text_element` and `Spreadsheet#ruling_lines` accessor and `Spreadsheet#add_spanning_cells!`

Tests pass (or, well, with the exception of the 2 that are currently not passing on master) and the tabula web app works with minor changes from the feature/tabularinterface branch in Tabula (https://github.com/jazzido/tabula/pull/136) (should be concurrently pulled with this PR).