Unbreak ACursor.

Fixes #35.

Fixes #29.

Fixes all ACursor navigation combinators being broken when succeeded == false.

Fixes Map DecodeJson codec.

Prevents accidental use of ACursor cursor when succeeded == false which was responsible for all above issues.

Changed declaration of CursorHistory, HCursor and ACursor from sealed trait to case class, in each
instance there was an attempt to hide construction but it was possible to do anyway. This makes
a few things a lot nicer, and allowed for consisten ok/fail constructor usage.

This commit breaks compatability in a few (good) ways.

  - ACursor.hcursor and friends now return option an
    can not be called in incorrect state.

  - ACursor.unary_- is no longer ambiguous was used for
    undo on cursors and validation. undo only now.

This commit breaks compatability in a few (indifferent) ways,
but overall the change comes up as a positive I think.

  - DecodeResult, ACursor, HCursor and CursorHistory are now case classes.

  - DecodeResult.apply, ACursor.apply and HCursor.apply are now called ok to avoid
    overloading on apply and add consistency.

  - ACursor.fail*, HCursor.fail* and DecodeResult.fail* are all
    just called fail for consistency.
Cleanup use of anonymous method symbols.
Added more complicated tests for attempt cursor, and its relationship to history.
Unbreak ACursor.

Fixes #35.

Fixes #29.

Fixes all ACursor navigation combinators being broken when succeeded == false.

Fixes Map DecodeJson codec.

Prevents accidental use of ACursor cursor when succeeded == false which was responsible for all above issues.

Changed declaration of CursorHistory, HCursor and ACursor from sealed trait to case class, in each
instance there was an attempt to hide construction but it was possible to do anyway. This makes
a few things a lot nicer, and allowed for consisten ok/fail constructor usage.

This commit breaks compatability in a few (good) ways.

  - ACursor.hcursor and friends now return option an
    can not be called in incorrect state.

  - ACursor.unary_- is no longer ambiguous was used for
    undo on cursors and validation. undo only now.

This commit breaks compatability in a few (indifferent) ways,
but overall the change comes up as a positive I think.

  - DecodeResult, ACursor, HCursor and CursorHistory are now case classes.

  - DecodeResult.apply, ACursor.apply and HCursor.apply are now called ok to avoid
    overloading on apply and add consistency.

  - ACursor.fail*, HCursor.fail* and DecodeResult.fail* are all
    just called fail for consistency.
Merge and cleanup from unbork-acursor.