Refactor table class

This refactor of the table class resulted in table inheriting from tag and moving most of the table class methods to private methods either inside the tag class or inside the table class. This pull request depends on my previous pull request. I would appreciate if you decide to accept these changes that you accept the first one and then this one instead of closing the first one and accepting this one. Although, I guess I'm not sure what the procedure is. 

Let me know if you think these changes are abiding to your vision of this gem!