Handle custom AttributeStatements

This pull request makes 2 main changes:

* It namespaces the encoded SAML response elements based on the SAML 2.0 schema
* It adds the ability to pass an option of `attribute_provider` to `encode_SAMLResponse`. If the option is not provided then the behavior doesn't change from what it has been. If the option is provided though then that object's `#to_s` method is responsible for providing the `AttributeStatement` portion of the assertion and associated `Attribute` and `AttributeValue` elements.