Order in init error

Previously, calling order in init caused an uninformative stack trace. It now raises a specific exception and informs the user that it can only be called in handle_data(). Adding this check to the order validation code caused some tests to fail. These tests were actually incorrect and only exposed because of this new code. The tests were modified to be slightly more correct.