improve
since the other method is slow for LARGE files (like NAM ones)
[qfs] remove empty module
[dbpf] use sqlite as a storage engine
- store TGI and base64(file) for each file
[sql] previously merged into dbpf module
[dbpf] fix bug in ID parser
- remove debug statements
- file now prints records in "T{tid}G{gid}I{iid} length" format
[tgimatch] new program that searches for TGIs
- newline seperated file with records as follows:
	T856ddbacG6a386d26I6f2c5744
	T88777602Gceffb3a3I6f2c5744;comments which are ignored
	Te86b1eefGe86b1eefI286b1f03
- parse() splits the string passed into (tid,gid,iid)
- parser() generates from lines from a passed filename
- search() searches the DBPF instance for records from a filename
- command line expects a DBPF file first, then a file with lines in it
[tgimatch] use generator
[DBPF] make lazy-loading
- add self.load() function
- make Header struct a class variable
[DBPF] decode raw files when querying
[dbpf] Header now 'global'
[DBPF] add other header properties
[DBPF] add save method
- save to a passed fd
- consistent types used by structs/arrays
[dbpf] add comments
[DBPF] add item get/set
- db[t,g,i] = file
- records and search return only the TGIs
[DBPF] add __iter__ and __contains__ methods
- replace x.records with an iterator
- call self with list/tuple objeects rather than 3 IDs
[tgi] put tgi routines in a module
- ID() coerces to valid type/group/instance ID or none
- TGI() produces a partial or full TGI object
- TGI().query returns the SQL 'WHERE' clauses for this TGI
- parse() converts an TxxxxxxxxGxxxxxxxxIxxxxxxxx into a TGI
[dbpf] use tgi module
- stop make lazy-load explicit
- save to argv[2]
- update DIR, EFFDIR, and RUL TGIs
[tgimatch] user tgi module