Add core/derive crate to add derive macro for some traits (#256)

* [core] add core/derive crate to add derive macro for Flush

* [core/derive] change license from GPL-3.0 to APACHE-2.0

* [core/derive] implement Flush and AllocateUsing derives based on synstructure

* [core] re-export AllocateUsing and Flush derives from within core

* [core/derive] fix AllocateUsing derive impl

* [core/derive] adjust AllocateUsing tests

* [core/derive] apply cargo fmt

* [core/derive] add test::utils and improve AllocateUsing tests

* [core/derive] add explanation docs

* [core/derive] add doc for a hack

* [core/derive] forbid deriving empty enums for Flush

* [core/derive] update compile tests
14 jobs for master
in 27 minutes and 5 seconds, using 0 compute credits, and was queued for 3 seconds