raise OSError instead of IOError

DbfRecord has __getitem__ to support list(record), so remove as_list()
fix typo get_gate -> get_date, support ticks() change to timestamp(), and check before call

change header.last_update to getter / setter, remove set_last_update
add __contains__ (in operator) to DbfHeader

check Dbf() file argument type
add option don't close the stream