ruby: perl_object,object_freeze/thaw support; fix copy tag; debug

OBJECT/OBJECTV are mapped to simple SerealPerlObject
that has 2 instance variables:
class - the class name
value - the class data

OBJECT_FREEZE/OBJECTV_FREEZE:

example:
class SerializableFile
  def initialize(path)
    @path = path
  end
  def FREEZE(serializer)
    @path
  end
  def self.THAW(serializer,path)
    self.new(path)
  end
end

encoded = Sereal.encode(SerializableFile.new("/tmp/aaa.txt"),Sereal::THAW)
Sereal.decode(encoded,Sereal::THAW)

the value of 'serializer' is the symbol :Sereal (also exported as Sereal::FREEZER)
at the moment the encoder will emit only OBJECT_FREEZE tags
and no OBJECTV_FREEZE even if there has been an object with
this class in the past.

both encoder and decoder must be started with Sereal::THAW in order
to try to FREEZE/THAW objects

COPY: now the copy tag works correctly without expecting
the offset item ot be with track bit set.

DEBUG:
encoder/decoder accept Sereal::DEBUG flag like:
Sereal.decode(stream,Sereal::DEBUG)

will produce output like:
initialized (s) with compression type: 2 { p: 6, s: 136, l: 0, h: 0 }  method_sereal_decode()
compressed len: 128 { p: 8, s: 136, l: 0, h: 0 }  method_sereal_decode()
header end at 0 { p: 0, s: 139, l: 0, h: 0 }  method_sereal_decode()
   object: String: HTTP::Tiny { p: 13, s: 139, l: 3, h: 0 }  sereal_to_rb_object()
  fetched perl class named: HTTP::Tiny { p: 13, s: 139, l: 2, h: 0 }  s_read_perl_object()
     object: String: agent { p: 22, s: 139, l: 5, h: 0 }  sereal_to