Adds cachedproperty decorator to several properties of Corpus

*adds to wordcount,lines,frequencies so value does not need to be recalculated
*substitutes the body of these methods for values from functions in global scope
Speeds up by 57 TIMES total time to build and search shakespeare's collected works

*inserts only unique words into the corpus [2867 times fewer primitive inserts]

	FIGURE 1: cPROFILE info on change of input to insert
	Profiling: benchmarks/benchmark.py

			ncalls  			tottime   percall  cumtime    percall 	filename:lineno(function)
	BEFORE:	60307353/11495042   77.224    0.000    233.135    0.000 	trie.py:18(insert)
	AFTER:	262456/29723    	0.392     0.000    0.999      0.000     trie.py:18(insert)

		where ncalls = totalcalls/primitive (non-recursive) calls

	IMPROVEMENT FACTOR = primitive_calls_before/calls_after
					   = (11495042/29723)
					   = 3867 times fewer calls to insert

*tokenizes only a small subset of words in the Corpus.__init__ by roughly eliminating duplicates in
 a first pass () [~ 1/2 as many calls to token]

 	FIGURE 2: cPROFILE info on change in when tokenization occurs

 				ncalls     tottime  percall   cumtime   percall 	filename:lineno(function)
 	BEFORE: 	22990084   15.706   0.000     28.108    0.000      autocomplete.py:31(token)
 	AFTER:  	11565180   6.627    0.000     11.543    0.000      autocomplete.py:31(token)
 	W/O Freq.:    70138    0.042    0.000     0.080     0.000      autocomplete.py:31(token)

 	IMPROVEMENT FACTOR = calls before/calls after
 					   = 22990084/11565180
 					   = 1.987870832965851 times fewer calls to token

 	Note: figure is still dominated by the calls for frequency calculation (here used for reporting)

	FIGURE 3: Benchmark (from benchmarks.py) of time to corpus build+search

	BEFORE:

		TOTAL TIME = time(try_trie)
				   = 234.583298922 seconds

					Report
		----------------------------------
		File Searched: /Users/margoK/Dropbox/autocomplete/shakespeare.txt
		Frequency of term searched: 1665
		Total words: 11495042
		Total lines: 2116616
		Unique words: 29723

		Winning method: linear_search
		Winning time: 0.000328063964844

		linear_search: 0.000328063964844
		try_trie: 234.583298922

	AFTER:

		TOTAL TIME = time(test_trie_search) + time(trie_build_test)
				   = 5.72204589844e-05 + 4.09065389633
				   = 4.0907111167889845

		---REPORT---
		Input(s):('/Users/margoK/Dropbox/autocomplete/shakespeare.txt', 'foo')
		Function: trie_build_test Time:4.09065389633
		Found: dead

					Report
		----------------------------------
		File Searched: /Users/margoK/Dropbox/autocomplete/shakespeare.txt
		Frequency of term searched: 0
		Total words: 11495042
		Total lines: 2116616
		Unique words: 29723

		Winning method: test_trie_search
		Winning time: 5.72204589844e-05

		linear_search: 8.9168548584e-05
		test_trie_search: 5.72204589844e-05

	IMPROVEMENT FACTOR = (time_after/time_before)
					   = (234.583298922 sec/4.0907111167889845 sec)
					   = 57.3453593335471 times less time
Splits benchmarking of corpus-building from benchmarking of corpus construction

*adds simplereport function (for when only one trial/function is being reported)
*adds reportfn as a parameter to benchmark
*provides helper function in __main__ to test separate parts of corpus build/search