Levelization: source code structure

This de-tangles dependencies:
* basics/ no longer depends on any other modules
* crypto/ depends only on basics/
* protocol/ depends only on basics/ and crypto/

Reviewers: @scottschurr @mtrippled 
The `20` here seems pretty magical.  Perhaps a good way to declare the size would be `sizeof (seed) + sizeof (std::uint32_t)`.  That might describe what's going on a little better.