Add support for custom soap headers

This change allows you to set soap headers on the client outside of authentication headers.

This is a cleaned up version of #86