add junit jar
Cache
-----
Added an interface called RouteCache and provided a concrete Implementation called InMemoryRouteCache. No need for static now. To keep the existing logic work, I've made InMemoryRouteCache singleton. Ideally Cache should be passed into the Airport. In which case, it won't need to be singleton.
Added a flush method to the Cache, to clear out the cache

Airport
------
Added an overloaded constructor to the Airport, to allow for passing in a different type of cache
Added a Airport.toString() method to make debugging tests easier
Made outgoingAirports (in Airport) final. Also changed the implementation of setOutgoingAirports(). Also renamed it to addFlightTo() to make it more communicative.

AirportTest
---------
Got rid of PowerMockito (one should always avoid using PowerMockito. Its a disgusting framework)
Renamed shouldReturnValueInCacheIfExists() to returnsCachedValueIfExists() - Less verbose and to the point. Also in the same test earlier we were using assertEquals(), this is wrong. We should use assertSame() Because we want to make sure the cached value is returned, not a new instance.
Renamed shouldInsertIntoCacheIfNotPresentAlready() to cacheValuesForFuture() - Again less verbose and to the point. Also after we've got rid of PowerMockito, look how clean the test looks
got rid of setOutgoingAirport() method, instead now we can call airport.addFlightTo(), which is lot easier to understand. Earlier it was not clear which is added to what.
Renamed all test method to express intent not implementation details. (also trying to make then less verbose, by removing redundant words like Should)
Airport
-----
Renamed airportName to airportCode
Also got rid of getAirportName() - don't like to expose internals (read as preserving encapsulation)

Cache
-----
createCacheKey() now takes the source and destination airportCode instead of the whole airport object
RoutePlanner
----------
Removed the ShortestRoutePlanner and instead created an interface called RoutePlanner. We can have different kind of RoutePlanners which take 2 routes and tell you which is the best route, depending on your criteria.

Airport
------
Got rid of getOutgoingAirports() method. As it breaks encapsulation
Also moved computeShortestRoute() from ShortestRoutePlanner to this class. Renamed it to computeBestRoute() as this is generic logic which can be used for any kind of RoutePlanner
Added a failing test to show a bug in the code.
Merge pull request #1 from nashjain/strategy

merged changes from Naresh