LuaJSON
	JSON Parser/Constructor for Lua

Author:	Thomas Harning Jr. <harningt@gmail.com>

Source code:
    http://repo.or.cz/luajson

Bug reports:
    http://github.com/harningt/luajson
    harningt@gmail.com

Requirements
	Lua 5.1
	LPeg (Tested with 0.7, 0.8, 0.9 ... 0.6 mostly works)
	For regressionTest:
		lfs (Tested with 1.4.1)
	For lunit-tests:
		lunit >= 0.4

License
	All-but tests: MIT-style, See LICENSE for details
	tests/*:       Public Domain / MIT - whichever is least restrictive

Module/Function overview:
	json.encode (callable module referencing json.encode.encode)
	--encode ( value : ANY-valid )

		Takes in a JSON-encodable value and returns the JSON-encoded text
		Valid input types:
			table
			array-like table (spec below)
			string
			number
			boolean
			'null' - represented by json.util.null
		Table keys (string,number,boolean) are encoded as strings, others are erroneus
		Table values are any valid input-type
		Array-like tables are converted into JSON arrays...
			Position 1 maps to JSON Array position 0
	--isEncodable ( value : ANY )
		Returns a boolean stating whether is is encodeable or not
		NOTE: Tables/arrays are not deeply inspected

	json.decode (callable module referencing json.decode.decode)
	--decode	(data : string, strict : optional boolean)
		Takes in a string of JSON data and converts it into a Lua object
		If 'strict' is set, then the strict JSON rule-set is used

	json.util
	--printValue (tab : ANY, name : string)
			recursively prints out all object values - if duplicates found, reference printed
	--null
			Reference value to represent 'null' in a well-defined way to
			allow for null values to be inserted into an array/table

Attribution:
	parsing test suite from JSON_checker project of http://www.json.org/
	No listed license for these files in their package.
