Deserialize metadata (#488)

* Make public fields for InkProject and specs

* Make layout fields public

* Use scale-info from branch

* Add Deserialize derives, use ReadOnlyRegistry

* Deserialize contract metadata specs

* Deserialize layout2 specs

* WIP decode hex

* Use impl_serde crate for hex byte string serde

* Test for selector deserialization

* Fix up custom deserialization

* Export selector and add to_vec impl

* Fmt

* Fix up spec segments IntoCompact

* Make name public

* Update to latest scale-info master

* Replace pub fields with getters

* Replace pub fields with getters in spec

* Fix search replace error with any::TypeId

* Use scale-info 0.4

* Fmt

* Remove commented out getter

* Fix up other scale-info deps

* Clippy

* Fix up message and constructor spec builder method names

* Serialize empty bytes vec without 0x prefix
16 jobs for master in 6 minutes and 26 seconds (queued for 3 seconds)