Make implicit account delegatable
Implicit accounts (tz1, tz2, tz3) can directly set their delegate. Furthermore implicit accounts have the ability to delete their delegate by sending a "delegate" transaction with an empty delegate field. This change does not impact the ability for originated (KT1) accounts to set or delete their delegate.
The storage type of the "Delegated" accounts changes it's index from "Contract_hash" to "Contract_repr.Index". This change in the type signature allows that both implicit and originated accounts can be stored in the set.
Commit 98dbbe89 changed the type of the key of the "Delegated" storage from "Contract_hash" to "Contract_repr.Index". The migration needs access to the previous type of the "Delegated" storage in order to read it from the context. For this reason the old types for the "Delegated" storage have been duplicated with the "_004" suffix. The "_004" types are only used during the migration.
replaces !43 (closed)