Use ChuckyKnnTool.py to replace the former shell call,and add  expression cache to ConditionEmbedder to improve the performance 

ChuckyKnnTool.py is cut from joerntools knn.py
As fabian have said in the comments it's no need to make a shell call  when calculate KNN
as direct python function call is more efficient.
Add cachedir:"exprcache" to cache expression embedding info
Modified the __init__ function to the set cachedir to make  ConditionEmbedder works as APISymbolEmbedder

change the using pattern of above function in NearestNeighborSelector and ChuckyEngine

The performance is slightly improved now when running the command like 
```
python chucky.py -i callee atoi
```