Do not de/index None values, and other index stuff

- it the value to index/deindex is None, do nothing*
- calls to the index/deindex methods are done only if field is indexable
- replace "if self.indexable" by "assert self.indexable" in these methods
- hset and hincrby use hget and not hgetall to know value to deindex

*why we must not index/deindex None values ? Because how to make the difference between a value set to None, and then indexed as None, and a value not set, so not indexed ? both will return None for a get call, but a collection will only return ones set