Allow init actions without AppExchange package install

Because this is hosted on GitHub, the package may not be installed via
AppExchange - and as such, the install script would not be run. This
requires a way to run it without passing an InstallContext variable.
The main method is private and only the external methods are global, to
ensure that they are run properly and to maintain forward compatibility
in case we want to execute special code only if the package is
initiated outside AppExchange.
Merge pull request #20 from dschach/master

Allow init actions without AppExchange package install