Fix #101, implement new way to handle beaker conf with user prefs

Before this change the beaker.conf.json file will only be copied
to the .beaker directory, when one file doesn't exist already. After
this change, such copying operation won't take place anymore. Instead, a
beaker.pref.json file in the dot directory will be used to record user
preferences. And the final configuration beaker uses would be the merged
result of the beaker.conf.json (in install dir) overridden by
beaker.pref.json (in .beaker). Also, removing elements from arrays is
possible by by prefixing array property name with "_remove-".
can we call clean() on the files (as defined in UtilRest.java) so they can have comments?