PlanOut PHP Port Code Review

This PR should provide the project maintainers over at [PlanOut](https://github.com/facebook/planout) an easy way to review adding the proposed PHP port contained within this repository as a submodule for the original project.

Timeline for merge:
- [ ] review proposed port in this branch
- [ ] merge changes back into this repository's master branch
- [ ] update submodule checkout commit in [PlanOut PR](https://github.com/facebook/planout/pull/31) to reflect changes
- [ ] merge port as submodule into main PlanOut repository

cc @eytan for review
I would suggest making this `private $experiment = null;` and then using `is_null()` instead of `isset()`.  This way you say upfront that this instance variable is expected to sometimes not be set.  It's also how you'd have to write it in Hack.