Errors raised if no space to place ship or if space is taken. Plus lots of refactoring.