Add support for Record types

Add support for Record types (just like PODO types), so one could use:

TContact = record
FirstName: string;
LastName: string;
PhoneNumber: string;
end

[ServiceContract]
IContactsService = interface(IInvokable)
['{F0BADD7E-D4AE-4521-8869-8E1860B0A4A0}']
function GetContacts: TArray;
procedure NewContact(const Contact: TContact);
end;