Major refactor

Supports multiple personalities (borrowed some code from strace) and allows
for filters to more easily be added or removed.

Implemented 'safe memory'.  Sets up a read only memory mapping in the client
address space.  This prevents other processes/threads from modifiying the state
so parameters can be copied into safe memory and vetted in a secure manner.