gh-25: implement
* implement reading, writing and performing. Detection does
  not set it. Unchanged merge will be fastforwarded and
  Changed is better to report and give user a chance to decide,
  as it was previously with degenerated merges
* added some tests