added weak references

added 'weak' keyword, which can be applied to class variable declarations
weak class references do not automatically retain/release
    useful for non-owning references to allow auto deallocation.
    eg in a doubley linked list, the reverse reference would be 'weak',
    allowing the whole list to be dealloced in a chain