utilising engine module

Moved most of main to engine, first step of rewrite.
small map/tile changes

Written some documentation, also fixed the solid tiles not colliding
properly.

I've realised at this point that in some places, tiles will need to go
on top of one another - for example, a slope tile (half transparent,
half solid) will need a background tile underneath it. As such a matrix
of one tile per square won't cut it. I will therefore add:

a way of searching for all tiles found at x,y
a way of adding tiles to the map
larger map/tile changes

-You can now have multiple tiles on the same square
-You can set a 'type' of tile - solid, foreground, background
-spritegroups for each different type of tile, all things that need
updating that tick
-make_matrix is now only for making a quick background, and add_tile()
is for adding tiles on top
-to add - proper mapmaking from a file, level editing - but these are at
a later date once we've got collision sorted out :D
Sprite groups a constant, GameThing

-Now the sprite groups are a constant
-Added super class GameThing that both tile and object inherit
more changes, collision

-added an objects group
-changed make matrix to make background
-added a very shitty but working rectangle collision and a really cool
and totally NOT working mask based collision
mask collision

it's happeniiiiiing!

in the end after messing around with really complicated things and hours
of debugging, doing it almost exactly the same as rectangle checking was
the solution! It's much more precise than rectangle checking though!

small bug on testing: moving into a thing on the right caused the
character to hover a few blocks up sometimes. maybe due to the character
model? i'm sure there's a fix but right now i must victory shower!