Cache getattr(lib, symbol) in _CProperty

The repeated re-assignment of `func.argtypes` and `restypes` was making it
look like new objects were being created whilst trying to find the source of
a leak. This cache is a convenience which prevents that.