Deal with trait incompatibilities

Summary: #5306996 has the best description. In short, if you have a memoized method in a trait with no args, and override it in a class with something like `<<__Memoize>>function foo($arg = null) {}` you get a fatal because the cache prop in the class and the cache prop in the trait are initialized with different values. This fixes the issue by disambiguating the properties

Reviewed By: @jano

Differential Revision: D1602174