Fixes Xcode 6.1 optional inits, fixes unit test error messages

For the unit test changes:
Uses `XCTAssertEqual` for most of the tests instead of `XCTAssert`, since `XCTAssertEqual` produces better error messages for simple equality assertions, namely, it shows what the result actually was, as well as what it was expecting it to be.

For Xcode 6.1:
It simply implicitly unwraps the failing initialiser optionals where it makes sense to do so (mostly in the tests), but it uses `if let` in the deserialisation code.