Features/shared code

Add Zone with its link tables and tests and Role::Errors. Touches no other code and passes RELEASE_TESTING. Used by features/taxes branch (at least once latest commits go in) and hopefully by updated shipping.