Modify json_leaf to handle numerical & boolean data properly

* add json_leaf_numerical<T> class to handle numerical data
* json_leaf is now a template class, and json_leaf<int>, json_leaf<double>, json_leaf<bool> are specialized
* fix a little bug