Made environment a singleton class and test for cells
I typed a commit comment thing but git wouldn't let me so now there isnt one
Merge branch '0.3.single' of github.com:NCFDev/cellular into 0.3.check
Almost done
Wrote and finished a print_table() function!
Fixed a bug where cells wouldn't update their positions properly when doing something other than actively trying to accelerate or deaccelerate.
Rewrote the function used to debug print_table() as debug_print_table()
added a main file, ummm not really sure what else, uhhh, i guess i did something in cells.  not sure qhat
durp
Created Singleton class to clean up Environment. Then split off distance function and Singleton class into their own files, util and singleton. Removed some unnecessary output from environment unit tests and made sure that test.py initializes the environment before any tests need to use it. Started using docstrings.
test add_food that the right number of food are added
Hey! Cells don't leave the environment now!
...sort of.
Technically it doesn't work perfectly until the singleton is implemented, but the code is written so that it should be easy to rewrite once that's fixed.
Begining to setup stuff for cells picking destinations to go eat food
Merge branch '0.3.single' into 0.3.check

Conflicts:
	cells.py
	environment.py
cells move towards fucking shit, when they are or are not hungry, aka when food is close enough.

cells might get caught in an orbit, but the code to move to destination
is currently set to consider them moving towards it in a straight line
starting with no velocity, and their movement stops after a
predetermined amount of time calculated based on how long it would take
to reach the destination in a straight line.
fixed merges or whatever
geany lol
Merge branch '0.3.print' into 0.3
WooMerge branch '0.3.check' into 0.3

Conflicts:
	cells.py
	environment.py
MADE A LOT OF CHANGES (and Bugfixes!)

~~~Patchnotes:
-> Removed minor leftover merge conflicts.
-> Fixed speed calculation.
-> Fixed update_coords() not being called properly.
-> Added optional comment variable to print_table() which is output
above the table to help identify it; is currently used to display each
tick.
-> Added World.print_table() to each tick in main.py.
-> Fixed cells NOT using an environment's actual size when attempting to
wrap around it.
-> Fixed random_walk() not properly calling the environment singleton,
causing the program to only occasionally run.
-> Fixed cells not being told they no longer had a task and destination
after eating the food they were moving towards. (Now, as soon as a cell
eats food, its task and destination are set to None.)
-> Cells that were about to go the speed limit no longer sometimes go
the speed limit in the opposite direction. Accomplished this by creating
a new function, speed_limit(). (As a result, speed-limiting code in both
the acceleration and deacceleration functions have been removed.)
-> Food locations are now updated every tick instead of every twenty
ticks. (This was because if cells ate food on a tick that wasn't the
twentieth, it wouldn't be given a new destination and the program would
crash. Ideally, cells should be able to ask the environment for an
update on food locations only when the cells themselves need it, so that
it doesn't need to happen every single tick.)
-> Cells now consume food at the end of each tick. (This fixed cells
eating food, which would remove their destination, and then attempting
to move somewhere, causing a crash.)
-> slow_towards_destination() is completely rewritten. Now, instead of
attempting to accelerate the cell away from its destination, effectively
lowering the cell's velocity, the cell's velocity is now subtracted from
(or added to, if the velocity is negative) directly. This fixed a bug
where cells would sometimes get stuck with a task of "stop" and end up
rapidly accelerating away from their destinations.
-> New: check_cell.py is a simple program used to take the results of a
print_table(), and write a new print_table() except with only a single
cell's data. Each line in the file represents a tick. This is excellent
for tracking a single cell's movements and change in task, destination
and energy over time.
-> Rewrote some comments to better explain the code's functions.

~~~Still needing to be fixed:
-> Cells have been seen warping from one place to another. Proof of such
is provided in a text file within this commit.
-> Food has been seen being removed from the list of food with no Cells
gaining any energy. In the same instance, some Cells would gain energy
when they had not immediately before eaten food. (This has only been
seen once, and may even have been fixed.)
-> Cells will sometimes reach their X destination before their Y
destination(, and vice-versa). Because the cell is still accelerating,
the cell will begin to occelate past the X destination until it decides
it needs to slow down.
-> Cells don't always reach their destination on their first attempt,
sometimes sliding past it, and must stop completely before trying again.
-> When food no longer exists, the program crashes due to cells not
being given a new location for food. (This will be resolved when
"explore" is implemented.)
-> Cells aren't being told to "explore."
-> one_tick() STILL needs to be completely rewritten, even though cells
move and function pretty well at the moment.