Add allowed values and nested variables

along with a bit of a refactoring to reveal intention.
Some control over immutability
PHP 5.3 compatibility

bugfix: using self:: in callback not supported in 5.3
Merge pull request #24 from brightmachine/master

Add allowed values and nested variables & a bit of refactoring to make intention clearer
Add space between method name and brace
Update composer.json
Cleaned up travis.yml
Merge pull request #31 from GrahamCampbell/patch-2

Cleaned up travis.yml
Merge pull request #30 from GrahamCampbell/patch-1

Update composer.json
Merge pull request #28 from BlueBayTravel/const-style

Add space between method name and brace
Removed derp
Merge pull request #32 from GrahamCampbell/patch-1

Removed derp
Support comments in .env file
Merge pull request #34 from motin/support-comments-in-env-file

Support comments in .env file
Fix #26 - Required ENV vars should not be empty

 * Also does small formatting cleanup from different merged styles
PHPCS PSR-2 auto fix
Allow special characters including $ signs

Addresses #36
Merge pull request #37 from brightmachine/bugs/special-chars-36

Allow special characters including $ signs
Revert fix for #26 as it is a breaking change
Allow extensions to override methods