3.0 - Allow properties to be hidden and computed properties to be exposed

As per #2369 I've added the ability to hide concrete properties and expose virtual/computed ones. I've changed the names a bit since #2369 because I felt the new ones worked better. I am totally open to changing the names of methods/properties again if we can come up with better ones.