Support custom attribute mappings for Attribute Exchange

These changes allow specifying custom aliases for use with the Attribute Exchange extension. This is particularly useful when working with an OP that doesn't follow the Google conventions outlined in http://code.google.com/intl/en-US/apis/accounts/docs/OpenID.html#Parameters.

This change builds upon the changes in pull request #109.