Ensure health never goes over max health

- use setter and property decorator
- fix tests to follow constraint