WIP: initial implementation

This commit introduces an object that can be used in order to
transfer resources from one region to another region not in the
same stack. Such functionality may be required in order to move
objects from one thread to another.

The way how RVal solves a problem is that it creates a virtual
region that is assosiated with RVal box, and all values that
exists in that box are freed once RVal is dereferenced.

   Current implementation is in a serie of a commits and will be
   squashed/ammended as soon as implementation will be stabilized.

Problems with current implementation:

  1. This implementation introduces a new typeclass, so only
  values that have required instance can be moved. This is not
  the ideal behavior, it would be nice if it's possible to
  use Dup typeclass in order to transmit values.
  Reprotect typeclass plays 2 roles:
    - it introduces a way to read refcountptr (or it's possible
    to refactor it to be a handle)
    - it introduces an unsafe way of casting handlers

  2. Internal data types are exported from Internal module, this
  may be not a big concert, but anyway

  3. This commit introduces just once structure, however it would
  be nice to introduce some generic building blocks that can be
  used in order to create a strucutes with required properties.

  4. Unsafe cast method in Reprotect type class is too unsafe,
  it's possible that we need to make it monadic or give a witness
  of some kind.

  5. RVal doesn't to any unprotection on it's own
WIP: Add cleanup mechanism to RVal