allow feature in different types

e.g.
* basestring: feature like "word:xxx"
* dict: feature like {'word': 'xxx'}
* tuple: feature like like "word:xxx", 2.0 (for scale)

also allow the x is a list of list of features or a list of feature dictionary