Provide table join method

This PR provides a full-featured join method for the Table class.  It includes support for inner, left, right, and outer joins.  Metadata are merged as well (see below).

This PR also includes a new module astropy/utils/meta.py which provides functions for merging metadata.  This includes a simple recursive merge algorithm which is tested.  Some hooks are available for adjusting the merge rules, but this is preliminary and not well tested. 

Still to do: 

- Raise exception if there are missing data in key columns