__getitem__ does not iterate

takes from file directly by calculating based on HEAD. Moved extracting
item to a seperate as part of this
history request is de-duped
handling no-history when storing