Added foreign_id and extra_data fields

The foreign_id field is supposed to be used to hold the account/group id
from the external datastore.  The extra_data field is a JSON field that
can be used to hold extra data specific to a datastore.

Change-Id: I4c06bea6adfbadc1c691392d3c4e3a0f860ed216
Abstracted out account edit form

The account edit form is now an extension of the datastore API, since
each account type is datastore specific.  The edit_form(account)
function in the datastore API will allow rendering of this datastore
specific form on person page without hardcoding the forms into the page.

This patch also adds a specialised template rendering tag that allows
the account object to return an unrendered template.  That is then
rendered using the {% inline_render form %} template syntax.

Change-Id: I64c7df9d51097fb81939913d8bc9722f10b98b3a