Normalize unit test sources, add non-unity build targets

Source files are split to place all unit test code into translation units ending in .test.cpp with no other business logic in the same file, and in directories named "test".

The SConstruct is modified to provide a new family of targets, ending with the suffix ".nounity", which compile individual translation units instead of some of the unity translation units ("classic" builds). Two modules updated for this treatment are ripple/basics/ and ripple/protocol/, with plans to update more in the future. A consequence is longer build times in some cases. A benefit of classic builds is that missing includes can be identified through compiler errors.

Reviewers: @howardhinnant, @rec