Xirrus + AeroHIVE external portals + small ecwp refactor

Adds :
* The external captive portal detection can now be done with a URL containing the name of the switch module to use (ex : http://1.1.1.1/Xirrus::AP_http)
* The redirect url is sent back from the external captive portal module so it can be set immediatly since external captive portals won't necessary go to /captive-portal anymore
* The CGI session ids are different from the catalyst captive portal so both can be used in parrallel
* The arguments initially sent to the captive portal are kept in the session (on lib/pf side) so they can be reused. They are kept in : 'ecwp-original-param-$key' = $value
* Adds support to release a user through the submision of html code through the captive portal (posting a form to the ap for example)

Needs a good review for the way of doing things.

Not really agree with $connection->remote_ip, remote_ip is the source ip of the client so if you are behind a nat gateway this will not be the real ip address.  isn´t it possible to have the real device ip from the uri ? Or document  the pod that it´s not possible to use the AP behind a nat gateway.