Assert the token's block is not nil and check it before execution

Further enhancements on #804.
Should throw an exception rather than using assert. Anyone using the prebuilt framework will be using a release build of Realm even in debug builds of their application and so will never test their code against a build that has asserts enabled.