Protected player variables

Made most player variables private but accessible through properties.
This allows values to be validated before they are assigned.