Some refactoring, making system more robust and readable.

Made the basetile abstract, because you won't be using that on its own and I changed the structure a bit to configure the child classes.a bit easier. Also makes the configuration a bit clearer, instead of just passing numbers to the base constructor.