Merge the refactoring-branch into master

(This is a replacement for #43)

I think we should merge the `refactoring`-branch into master.

Changes in this branch (which is the cleaned up counterpart of the [original refactoring-branch](https://github.com/terrestris/shogun/compare/refactoring)):

* Update to Apache `commons-lang3` (mostly used for the model methods `toString`, `hashCode` & `equals`)
* `DatabaseDAO`
  * enhance `getDataByFilter`
    * support for `fields` and `ignoreFields`
    * support for dotted filters
  * dynamically control the fetch mode (`setEagerFetchModeForCollections`)
  * add `initializeDeep` to avoid `failed to lazily initialize - no session or session was closed`
  * add `hasUserRoleByUsernameAndRolename`
  * various minor / cosmetic changes
* Filters
  * add support for `NotLike`
* Requests
  * support for `fields` and `ignoreFields`
  * support for dotted filters
* Models
  * BaseModel & friends
    * implement generic `hashCode()` (subclasses override this)
    * implement generic `equals(Object obj)` (subclasses override this)
    * implement generic `toString` (subclasses override this)
    * add `info()`
  * collections as properties of models
    * most use `FetchType.LAZY`
    * are fetched using the most performant FetchMode (often `SUBSELECT`)
    * some are now being serialize in a lean way
  * `Group`
    * available rolenames now live here as constants
    * new field `roles`
    * new field `deletable`
  * `MapConfig`
    * new field `resolutions`
    * new field `scales`
  * `MapLayer`
    * new field `owner`
    * new field `additionalOwners`
    * removed field `users`
  * `Role`
    * enforce unique names
  * `User`
    * remove available rolename-constants (moved to `Group`)
    * enforce unique names
    * new field `user_firstname`
    * new field `user_lastname`
    * new field `user_title`
    * new field `user_bureau`
    * new field `user_department`
    * new field `user_unit`
    * new field `user_description`
    * removed field `modules`
    * removed field `mapLayers`
    * removed field `mapConfigs`
    * removed field `roles`
    * removed field `user_module_list`
    * new transient method `getRoles`
    * new private method `hasRole`
* Database initialisation
  * changed to match new model needs (see above)
* Spring Security
  * `authentication-provider` changed to match new model structure (see above)
* JSON serialization
  * add `LeanBaseModelListSerializer`
  * add `LeanBaseModelSetSerializer`
* add many `TODO`s
* many whitespace changes

Please review.