JSON output i200 added `--json` argument

http://gsd.uwaterloo.ca:8888/question/873/produce-instance-data-as-json
refactored IG Env to reduce duplication and nest IGArgs and ClaferEnv
bumped version to 0.3.3
added dependency on json-builder and string-conversions
split --addUidsAndTypes into --useUids and --addTypes. --json forces
--addUids
overlapping is true for references and false for colons
Merge branch 'master' into develop
[224] Fixed Bug Where scope was allowed over bitwidth's capacity

http://gsd.uwaterloo.ca:8888/question/936/disallow-scopes-larger-than-allowed-by-bitwidth
Merge branch 'master' into develop
Merge branch 'develop' into scope
[224] Fixed Bug Where scope was allowed over bitwidth's capacity
[224] Fixed Bug Where scope was allowed over Bitwidth's capacity
Fixed error message not displaying when non global scope was increased over bitwidth max capcity with "i #"
fixed small bug where extra empty newlines where made when calling i #
Added clarification on which scope was exceeding the bitwidth's capacity
Merge pull request #3 from gsdlab/scope

 disallow scopes larger than allowed by bitwidth

Everything looks okay. FYI:

```haskell
if x then outputStrLn y else return ()
```

can be rewriten as

```haskell
when x $ outputStrLn y
```
When showing instance of clafers of type "string" it will now display the proper string rather than just the integer
Cleaned up Sugarer.hs
fixed bug where naming another type as a string would still display it as an integer
Fixed bug where error occured on nested clafers with string values and failed when using real value
Changed StringValue and intValue sharing the same Value Constructor
Fixed bugged with not making random strings and re organized for readability
more re organization for readability
Added " " to the string returned when making random strings