Complete implementation of PeopleCollectionFactory

Build object from each input person hash
Add RotaWeekBuilder for naive rota generation

* Returns three of the provided people to be rota'ed onto support.
* Ensures uniqueness of the three people rota'ed in

TODO: Base choice on real rules not naive randomness
TODO: Include knowledge of historical data
Pick people of the correct role and with prod access

When selecting people for the relevant roles make sure:

 1. At least one of the two developers has production access
 2. Exactly one webops and two developers are chosen

Build a TestPenguinFactory to facilitate Real Tests(tm).
Check primary dev has production access
Ensure only a single person from each team is picked

* Move TestPenguinFactories to their own namespace.
* Add TestPenguinFactories::ColonyFactory
  * Returns an array of penguins
  * The makeup of this array is 'real-world-ish'
    i.e. contains developers with and without prod access, webops people, etc.
* Churn some lines for style guide compliance