Handle initialization/finalization and copying of records.

Note 1: the Init-RTTI of a record is extended by a new field "IsWeak" to denote a field as "weak"
Note 2: the Init-RTTI of a class is extended by a new field for the reference count offset

compiler/ncgrtii.pas, TRTTIWriter:
  * fields_write_rtti_data: write out the corresponding value if the field is "weak"
  * objectdef_rtti.objectdef_rtti_fields: write the offset of the reference count field (or 0 if not reference counted) as part of the Init-RTTI of a class
rtl/inc/rtti.inc:
  * RTTISize: handle the tkClass case
  + new function "RTTIRefCountOffset" to determine the offset of the reference count field (if any) based on the Init-RTTI of the class
  * RecordRTTI: only call the rttiproc ("initialize" or "finalize") if the field is not "weak"
  * fpc_Initialize: initialize class instance fields to Nil
  * fpc_finalize: call RefCountClass_Decr_Ref for class instance fields if we have a valid reference count offset
  * fpc_addref: call RefCountClass_Incr_Ref for class instance fields if we have a valid reference count
  * fpc_copy: call RefCountClass_Assign for class instance fields if we have a valid reference count offset
  * fpc_copy: use Move instead of fpc_copy to copy a class instance field if it is "weak"


git-svn-id: http://svn.freepascal.org/svn/fpc/branches/svenbarth@28814 3ad0048d-3df7-0310-abae-a5850022a9f2