Set xAlign and yAlign on component with setters rather than variable acc...

...ess.

Store alignment internally as a proportion between 0 and 1 rather than a string. Simplified layout code. Move error handling to
the setter.
Simplified unit tests.
Close #107.