App Layer

This is https://github.com/inliniac/suricata/pull/745 plus my own set of fixes, cleanups and name changes. It's huge.