corrected logging in test, and updated README
MapResourceBundle is enumMap, instance rather than static
I18NKeys in Java maps (MapResourceBundle) have added functionality for auto-generating stubs and merging values from other sources.  See #273
Transfer to laptop
Remodelled solution see #273, using a single PatternSource and multiple BundleReader and BundleWriter implementations.  All regression tests are green but more testing for this solution is needed.  Currently only ClassBundleReader and ClassBundleWriter implementation provided
Consider removing generic from I18NKey
Removed generic from I18NKey (decouples keys from class based implementation)
Regression tests pass
Introduced Java 8, which also means #287 needs to be fixed
Properties version of bundleReader & writer added but not yet passing tests
DefaultPatternSource tests need to be re-written
Remaining tests fixed apart from PropertiesBundleWriter and merge tests (currently ignored)
Fixed #287
Merge remote-tracking branch 'upstream/develop' into develop

Conflicts:
	.idea/dictionaries/david.xml
	.idea/misc.xml
	src/main/java/uk/q3c/krail/core/guice/BaseGuiceServletInjector.java
	src/main/java/uk/q3c/krail/core/navigate/LabelKeyForName.java
	src/main/java/uk/q3c/krail/core/navigate/sitemap/AnnotationSitemapEntry.java
	src/main/java/uk/q3c/krail/core/navigate/sitemap/AnnotationSitemapModule.java
	src/main/java/uk/q3c/krail/core/navigate/sitemap/DefaultAnnotationSitemapLoader.java
	src/main/java/uk/q3c/krail/core/navigate/sitemap/DefaultSitemapChecker.java
	src/main/java/uk/q3c/krail/core/navigate/sitemap/DirectSitemapEntry.java
	src/main/java/uk/q3c/krail/core/navigate/sitemap/DirectSitemapModule.java
	src/main/java/uk/q3c/krail/core/navigate/sitemap/MasterSitemapNode.java
	src/main/java/uk/q3c/krail/core/navigate/sitemap/SitemapChecker.java
	src/main/java/uk/q3c/krail/core/navigate/sitemap/SitemapNode.java
	src/main/java/uk/q3c/krail/core/navigate/sitemap/StandardPageLabels.java
	src/main/java/uk/q3c/krail/core/navigate/sitemap/StandardPageLabels_de.java
	src/main/java/uk/q3c/krail/core/navigate/sitemap/StandardPageLabels_it.java
	src/main/java/uk/q3c/krail/core/navigate/sitemap/StandardViewKey.java
	src/main/java/uk/q3c/krail/core/navigate/sitemap/UserSitemapNode.java
	src/main/java/uk/q3c/krail/core/navigate/sitemap/comparator/AlphabeticAscending.java
	src/main/java/uk/q3c/krail/core/navigate/sitemap/comparator/AlphabeticDescending.java
	src/main/java/uk/q3c/krail/core/navigate/sitemap/comparator/InsertionOrderAscending.java
	src/main/java/uk/q3c/krail/core/navigate/sitemap/comparator/PositionIndexAscending.java
	src/main/java/uk/q3c/krail/core/navigate/sitemap/comparator/PositionIndexDescending.java
	src/main/java/uk/q3c/krail/core/navigate/sitemap/comparator/UserSitemapSorter.java
	src/main/java/uk/q3c/krail/core/services/AbstractServiceI18N.java
	src/main/java/uk/q3c/krail/core/ui/UIModule.java
	src/main/java/uk/q3c/krail/core/user/UserModule.java
	src/main/java/uk/q3c/krail/core/user/notify/DefaultUserNotifier.java
	src/main/java/uk/q3c/krail/core/user/notify/UserNotifier.java
	src/main/java/uk/q3c/krail/core/user/opt/DefaultUserOption.java
	src/main/java/uk/q3c/krail/core/user/opt/UserOption.java
	src/main/java/uk/q3c/krail/core/view/DefaultLoginView.java
	src/main/java/uk/q3c/krail/core/view/LoginView.java
	src/main/java/uk/q3c/krail/core/view/ViewBaseI18N.java
	src/main/java/uk/q3c/krail/i18n/DescriptionKey.java
	src/main/java/uk/q3c/krail/i18n/I18NFlexReaderBase.java
	src/main/java/uk/q3c/krail/i18n/I18NReader.java
	src/main/java/uk/q3c/krail/i18n/I18NValueReader.java
	src/main/java/uk/q3c/util/BasicForest.java
	src/test/java/fixture/MockCurrentLocale.java
	src/test/java/fixture/ReferenceUserSitemap.java
	src/test/java/fixture/TestI18NModule.java
	src/test/java/fixture/testviews2/TestLoginView.java
	src/test/java/uk/q3c/krail/core/guice/uiscope/UIScopeTest.java
	src/test/java/uk/q3c/krail/core/navigate/sitemap/DefaultDirectSitemapLoaderTest.java
	src/test/java/uk/q3c/krail/core/navigate/sitemap/DefaultMasterSitemapTest.java
	src/test/java/uk/q3c/krail/core/navigate/sitemap/DefaultSitemapServiceTest.java
	src/test/java/uk/q3c/krail/core/navigate/sitemap/DefaultStandardPagesModuleTest.java
	src/test/java/uk/q3c/krail/core/navigate/sitemap/DirectSitemapModuleTest.java
	src/test/java/uk/q3c/krail/core/navigate/sitemap/MasterSitemapNodeTest.java
	src/test/java/uk/q3c/krail/core/navigate/sitemap/StandardPageKeyTest.java
	src/test/java/uk/q3c/krail/core/navigate/sitemap/SystemAccountManagementPagesTest.java
	src/test/java/uk/q3c/krail/core/navigate/sitemap/UserSitemapNodeTest.java
	src/test/java/uk/q3c/krail/core/services/AbstractServiceI18NTest.java
	src/test/java/uk/q3c/krail/core/shiro/DefaultSubjectIdentifierTest.java
	src/test/java/uk/q3c/krail/core/shiro/KrailSecurityManagerTest.java
	src/test/java/uk/q3c/krail/core/ui/form/BeanFieldI18NTest.java
	src/test/java/uk/q3c/krail/core/user/notify/DefaultUserNotifierTest.java
	src/test/java/uk/q3c/krail/core/view/component/DefaultUserStatusPanelTest.java
	src/test/java/uk/q3c/krail/i18n/DefaultI18NProcessorTest.java
	src/test/java/uk/q3c/krail/i18n/DefaultTranslateTest.java
	src/test/java/uk/q3c/krail/i18n/DescriptionKeyTest.java
	src/test/java/uk/q3c/krail/i18n/I18NFlexReaderTest.java
	src/test/java/uk/q3c/krail/i18n/I18NValueTest.java
	src/test/java/uk/q3c/krail/i18n/TestLabelKey.java
	src/test/java/uk/q3c/krail/i18n/TestLabels.java
	src/test/java/uk/q3c/krail/i18n/TestLabels_de.java
	src/test/java/uk/q3c/util/BasicForestTest.java