Adding pockets and pulling in some things from PupTent.

PupTent has nice features, but entityx does not compile on Windows.