Improve TRAMP performance

**DON'T MERGE THIS YET**

The idea is to make a mini code review here. See #234 for more explanations.

Basically, delay projectile directory walking until absolutely necessary when over TRAMP. Performance over TRAMP is now instantaneous when you open files & friends, yet projectile still works if you press key combos like <kbd>C-c p f</kbd>.

I tried not to tie the implementation to TRAMP, that way people can tweak it for any conditions they can think of.

Things to be discussed:

* Variable names? Maybe `projectile-lazy-when`, `projectile-is-lazy-p` would be better names?
* What can go wrong here?
@bbatsov: I thought the same, but think about it: we want to cache when no project root is found... And that returns nil! Thus we can't simply return be value from gethash, we need to check the key.