General method that will return all public and protected
values of this entity as an array. All values are accessed
through the __get() magic method so will have any casts, etc
applied to them.

@param boolean $onlyChanged If true, only return values that have changed since object creation
@param boolean $cast        If true, properties will be casted.

@return array
@throws \Exception