Reorganize //lib/tonic

This patch breaks tonic up into several smaller libraries with a clear
dependency graph. Structuring tonic in this way will make it easier to convert
Flutter to using tonic because we can convert it library-by-library instead of
all-at-once.

Change-Id: I0366e4de7d9a5f8b81eb1d4062f97b8c29969ae0
39 files changed