I'm attempting Project Euler problems in Python.

My only personal restriction is to limit code to python standard library only.
That means I won't be using numpy or whatever, although I can use a lib if
I wrote it from scratch myself. However, that also means I get to take advantage
of itertools, which makes a ton of these problems super easy.

For the most part, I will try to optimize the answers but keep clear code
when the performance difference isn't much. I'd prefer all the answers to return
within 10s, but that's probably not possible (especially in the later problems).

I also wrote them in python2.7. No guarentees that it'll work in lower versions.

WARNING: This code contains spoilers. It has python solutions for all problems
I've completed, as well as the answers in the unittest file.  If you're reading
this to cheat, the only person you're cheating is yourself. Project Euler is
not a competition, but a learning tool.  Of course, if you're stuck on a problem
and would like to see someone's (i.e. my) take on it, looking at my solution
is also a learning opportunity, so don't let anyone else tell you differently.