XD-2306: Ability to upload modules

A new type of ModuleRegistry that supports saving uploaded modules.
The current behavior is for that registry to not allow deletion of modules which are in exploded form, which is a nice way of not allowing OOTB modules at the moment.

An alternative will be to use a different root folder for uploaded modules
So xd,customModule.home is a location external to $XD_INSTALL_HOME where I can maintain my custom modules which will be preserved when XD is upgraded. This registry requires manual copy of module files (or a homegrown installation tool) and may need to be ported if ModuleRegistry changes its layout. The upload module command is only used to upload custom modules to xd.module.home. These will be need to be re-installed whenever XD is upgraded. I think this is somewhat broken.  Perhaps users who provide custom modules should always configure a location outside of the $XD_INSTALL_HOME and the writable MR should be that one.  So module upload with  'xd.customModule.home' == null results in an error. This also prevents users from deleting OOTB modules via module delete.