MetadataState: use state for selections

Introduce a new state `MetadataState` that is able to track selected metadata items in order to share this state between different components of the application.

Use `MetadataState` to connect TreeCtrl and TableCtrl.
MetadataState: remove System.out.println()
Merge pull request #25 from stoewer/master

MetadataState: use state for selections
got back to the state where the tree doesnt lead to stackoverflow
fixed the tree event bug as it's annoying
name refactoring
merge changes
Merge pull request #26 from asobolev/master

Some name changes (metadata) and TreeItem back to working state

LGTM
display ID in the tree node fixes #32
Merge pull request #39 from asobolev/master

display ID in the tree node fixes #32
bugfix - cut of the name of root tree items
Merge pull request #40 from asobolev/master

bugfix - cut of the name of root tree items

LGTM
DialogView: return Option<T> in `showDialog()`

 This fixes #29 but uses a different approach: DialogController.getValue() is never supposed to return null.
Configuration: make classes copyable.
ProjectConfig: use properties and better data binding
AbstractConfiguration: use jackson instead of gson
Merge pull request #41 from stoewer/gndata-editor-29

DialogView: return Optional<T> in showDialog()
MenuCtrl: use system menu bar on OSX
Merge pull request #42 from gicmo/osx_menu

MenuCtrl: use system menu bar on OSX

Nice, thanks
Config: absolute paths in project config file

This fixes #43 by removing the file paths from the system and project config files.

For old config files it might be necessary to delete the paths manually in some cases.