core: Added new variation of register method - registerOrReject. Second one continues the
current behavior whereas register returns validation exception or undefined in plac of throwing it.
core: Rich validation report was removed from the exception itself and rich object
containing abstract report was added in it's place. Register method doesn't throw validation
exception and returns it if one occurs. To utilize previous behavior use registerOrReject method.