Added basic structure for button hooks to BMButton
Started refactoring skill logic, moving it from BMDie to BMCanHaveSkill, so that BMButton can share it
Finished refactoring skill logic, moving it from BMDie to BMCanHaveSkill, so that BMButton can share it. Moved unit tests to BMCanHaveSkillTest.
Added skeleton structure for BMBtnSkill and BMBtnSkillEcho, as well as unit test files
Removed PHP closing delimiters from unit test files
Added basic logic which runs BMButton->run_hooks when both buttons are being assigned to a BMGame
Added basic logic for BMBtnSkillEcho::load_buttons, currently without input validation
Added basic game-level unit tests for Echo
Added game-level unit tests for Echo vs Echo
Merge remote-tracking branch 'upstream/master' into 213_echo
Merge branch '489_disable_btn_specials' into 213_echo

Manually resolved conflicts in:
	src/engine/BMButton.php
- Re-enabled buttons with a button special that have a defined BMBtnSkill
- Altered recipes of Echo and Zero from 'none' to ''
Fixed BMButton->load() behaviour when BMButton->ownerObject is not yet defined
Fixed SQL syntax that re-enables Zero
Added more game-level tests to test that Echo games continue past game creation
Made changes to enable empty recipes to be loaded via BMInterface
Completed interface level tests for Echo vs defined button
Added code for BMBtnSkillZero
Fixed checkstyle warnings
Fixed checkstyle warnings better