Rework project root detection to always return a directory.

This used to return nil in certain cases to allow for "no" project root,
but the rest of the code did not work well with this. Now elpy just
issues a warning for a project root equal to the home directory.

This should fix #157.
Rename system tests to functional tests.
And => When in some feature tests
Add some compatibility definitions for Emacsen before 24.3.

This should fix #156.