Improve GameRuleManager to support a wider range of values

The following fixes have been made:

- Added documentation to `GameRuleManager`
- Modified methods available in `GameRuleManager`
- Renamed methods in `GameRuleManager`

The `GameRuleManager` is now a string-based storage system which accepts a wide range of values through use of the very generic `Object` value. Provided that the value is not null (and the `toString()` of that is also not null) then the string representation will be stored into the backing collection.

The values may then be retrieved using the renamed methods `getAsBoolean()`, `getAsInteger()`, and `getAsString()`.