Maintain a list of core DAOs

This is an improvement on CRM/Core/DAO/listAll.php, wrapping in a class
and making the table names available as well.
DAO function to list all foreign key references to a table

This patch also begins to formally describe the entity_id/entity_table
references, introducing a new first-class object CRM_Core_EntityReference.
We still need some way to describe the restrictions on the possible values of
entity_table for each DAO, so that findReferences() doesn't have to scan
all tables using a generic pointer.

Note that I've broken compatibility with PEAR links(), this would be
easy to reimplement if we need, but it was not being unused in core.
Merge pull request #538 from adamwight/list_fks

Metadata for foreign key and generic references