Integrate new Key and KeyPtr types into rest of ink! (#447)

* [primitives] add scale::{Encode, Decode} impls for Key

* [primitives] add #[inline] annotations to scale::{Encode, Decode} impls for Key

* [primitives] remove old Key and old KeyPtr abstractions

# Conflicts:
#	primitives/src/key.rs

* [abi] adjust codebase to new Key and KeyPtr abstractions

* [core] first step towards new Key and KeyPtr abstractions

* [primitives] add core::ops::Add impl to Key for testing

* [primitives] add Add impls for ref and value Key

* [primitives] add Key::as_bytes for little-endian architectures

* [primitives] add HasType{Id, Def} for Key

* [core] adjust ink_core::env for Key and KeyPtr changes

* [core] adjust ink_core::storage2 for Key and KeyPtr changes

* [lang] adjust ink_lang for Key and KeyPtr changes

* [lang/macro] adjust for Key and KeyPtr changes

* [core] fix lazy_cell Debug unit test

* [primitives] remove type_metadata impls, add scale_info impl

* [abi, core] update unit tests for Key changes

* [primitives] rename key2 -> key and key_ptr2 -> key_ptr module

* [primitives] rename bench functions key2 -> key

* [primitives] use Fields::unnamed
16 jobs for master in 9 minutes and 6 seconds (queued for 3 minutes and 43 seconds)