Jasmine compatibility; important fixes

Matcher toBe must check also type otherwise expect(True).toBe(1) passes.
Matcher toEqual must be implemented differently than toBe.
Matchers toBeTruthy and toBeFalsy must perform "soft" checking otherwise expect(1).toBeTruthy() and expect(0).toBeFalsy() don't pass.
Matcher toRaise should be able to check advanced exception objects otherwise you can check only exception message but not for example exception code attribute.

Spy callThrough must work with functions that take arguments.
Spy callFake should work with fake functions that take arguments.