Support for IdP initiated logout flow

This adds support for IdP initiated logout. The prior implementation only supported SP initiated logout. I also moved some common code into a SamlMessage base class. 

Please see the commit message for comments about how it is separated into two additional classes. I am open to changing this.

I have tested using OneLogin's test IdP application & logout flow.