Move to PHP5.4, fix bugs and add tests

Not ready to merge, 2 tests to fix.
here, you can use `->isEmpty` ;)