yiic() caching enhancement

before: yiic() was just a find statement that could take multiple seconds to run a command each time

after: yiic() looks for the nearest yiic from the cache.
If there isn't one in the cache, it finds the nearest one, and writes it to the cache.