* rewrite the implementation of the marginalized kernel.
* implement four computing methods of the generalized random walk kernel.
* in the path kernel up to length h, use trie to save all paths, saving tremendous memories; use the Deep-first search to get paths from graphs.
* in model_selection_for_precomputed_kernel method, complete the part to do cross validation when Gram matrices are read from file.
* in get_dataset_attributes methods, correct three sub-methods about getting node degrees, add sub-methods to get fill factors of graphs.
* change default chunksize of pool.imap_unordered parallel method to 100.
* remove try... except blocks in case they hidden bugs.
2. update pygraph.utils.graphdatasets.get_dataset_attributes function, so that if a dataset has missing attributes it can still read the dimension of attributes.
2. save gram matrices and relative data when using function cross_validation_pre_computed, before cross validation step, in case that something goes wrong with CV. Parameter read_gm_from_file can be used to choose whether to read gram matrices from file.
3. add some test code to check if a gram matrix is symmetric and positive semi-definite.