Make append operation supports type.

Make the append operation require a type; objects are keyed off of type
and key, so it is possible for a key to exist as both a G-Counter and a
PN-Counter.  Require the type for all operations.

Addresses #29 and #60. 

cc: @rsltrifork @bieniusa