Don't load system_metadata when it isn't joined.

If we always load system_metadata, it will throw a sqlalchemy
error if it isn't joined in the column. Rather than putting it
in extra keys we need to explicitly join it if it is missing.

Adds a test to make sure that system_metadata is returned
properly from the migration call even though the extra keys
parameter was removed.

Fixes bug 1146000

Change-Id: I05365906ed528a06fe5704449dab72c857fefa65
Merge "Don't load system_metadata when it isn't joined."