Overhaul service layer of UsaRugbyStats\Competition module
 - Move (nearly) everything into AbstractService
 - Refactor create() and update() methods to eliminate duplicate code
 - New method signatures:  create($data); update($entity, $data);
 - Each stage of form processing now triggers `<stage>` and `<stage>.post` events
Fix bug in RemoveExistingSignaturesFromCompetitionMatchListener
Move empty collection hack (See #15) from service to listener
Because PHP 5.4 is stupid.  That is all.
Merge branch 'feature/rejig-service-layer' into develop

BC-breaking reorganize the service layer of UsaRugbyStats\Competition to reduce duplicated code
Update dependencies to latest versions
Change MatchTeamPlayer $number from string(2) to integer so sorting works properly
Sort Competition events by minute of occurence
Sort Competition matches by date of occurrence
Add example skeleton of Competition frontend
Add some traits for common service accessor methods
Add MatchTeamEvent::hasPlayer to quickly determine if a given player is involved in the event
Add findAllForPlayer() repository methods to Competition\Match and Team
Update TeamLink and TeamName view helpers to accept an integer ID and fetch the Team object via composed TeamService
Implement PlayerStatisticsService
Update Player controller + view to use new PlayerStatisticsService
CS fixes
Implement IframeablePageListener to allow certain pages to accept ?iframe=true and render an alternate layout
Closes #59
Update controllers to use new Competition service APIs
Merge branch 'feature/frontend' into develop

Merge initial prototypes of user-facing pages