Support arbitrary sources for loading properties from

Hi,

in reference to #14

I would like to propose the attached pull request to support loading properties from arbitrary sources.
In detail, the pull request:
 * changed all internal occurrences of java.net.URL to java.net.URI
 * refactored some logic from <i>org.aeonbits.owner.loaders.Loader</i> into a new [AbstractFileBasedLoader](https://github.com/pgaschuetz/owner/blob/9c8a05589691254075169aadc43d2067d842605c/owner/src/main/java/org/aeonbits/owner/loaders/AbstractFileBasedLoader.java)
 * Introduced [AbstractNamedCustomLoader](https://github.com/pgaschuetz/owner/blob/9c8a05589691254075169aadc43d2067d842605c/owner/src/main/java/org/aeonbits/owner/loaders/AbstractNamedCustomLoader.java), which can be easily extended to support pretty much any source of configurations
  
see [CustomNamedLoaderTest](https://github.com/pgaschuetz/owner/blob/9c8a05589691254075169aadc43d2067d842605c/owner/src/test/java/org/aeonbits/owner/customloader/CustomNamedLoaderTest.java) for a demonstration

There is definitely room for improvement, especially <i>HotReloading</i> is not implemented yet, but this should be relatively trivial by moving the WatchableFile logic into Loader

Apart from some minor internal API changes, this pull request should not change any existing functionality. All tests run fine.

Please let me know what you think.