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 
Now `41` can be `pubGenSize + (2 * sizeof(std::uint32_t)`,
`33` can be `pubGenSize`, and
`37` can be `pubGenSize + sizeof(std::uint32_t)`