Add Struct tests
Following our discussion on immutable structs and builders(https://groups.google.com/a/twitter.com/forum/?hl=en&fromgroups=#!topic/scrooge-dev/2GxmZRqcygk), I'm adding some tests specifically for structs.

Since immutability is guaranteed by APIs both in Scala and Java, I tested out object comparison after the process of encoding/decoding, and deep copy etc.

RB_ID=115239
bump version to 3.0.3; update Changelog
Make generator jar executable

Make the generator jar executable so that it can be used by (for example) sbt-scrooge.
Move junit dependency to test scope

Junit is not needed at runtime. This specifies test scope for junit.
typofix for readme

RB_ID=116904
minor pom fix to release 3.0.3
Merge pull request #35 from erikvanoosten/patch-1

Make generator jar executable
Merge pull request #36 from erikvanoosten/patch-2

Move junit dependency to test scope
Union with primitive type fields did not work in Java code. This is because the generic Union constructor takes in the initial value as an object, then do a type cast to its proper type. When the field type is primitive, the type cast is not allowed. Eg:

   public NaughtyUnion(
     Field setField,
     Object value
   ) {
     if (value == null)
       throw new NullPointerException("Cannot construct NaughtyUnion with a null value");
     this.setField = setField;
     this.value = (setField == Field.VALUE ? (Naughty) value : null);
     this.field = (setField == Field.FIELD ? (Super) value : null);
     this.id = (setField == Field.ID ? (int) value : null);
   }

 [ERROR] /Users/csong/workspace/scrooge2/scrooge-generator/target/test-sources/thrift/java_def/default/NaughtyUnion.java:[128,44] inconvertible types
 found   : java.lang.Object
 required: int

I think the solution is to get rid of the public generic constructor. Users must call the static constructor methods in order to instantiate a Unoin object of a specific field type

RB_ID=117890
simplify Java union code
This example didn't work for Java
union foo {
  1: BarStruct value
}
because of naming clash: a general "getValue" method was generated and a specific one for the field "value".

I think a lot of the code in union.java is from Apache Thrift's TUnion APIs. Since we don't implement TUnion, I think we can get rid of them.

In the future though, we'll probably make Scrooge types extend TBase. In that case unions do need to implement TUnion. But this decision has not been made, and if it is, the changes would be across the board.

RB_ID=103926
dry-run option: parses and validates source thrift files, reporting any errors, but does not emit any generated source code.  can be used with --gen-file-mapping to get the file mapping

RB_ID=119384
Referencing constants defined in the same file
We couldn't refer to the constants defined in the same file. This is because we didn't resolve constants on RHS.

I think the type resolver implementation was wrong to treat a SimpleID on the RHS as an enum field. In fact, an enum field should never appear as a SimpleID; it should always be qualifed.

RB_ID=119106
bump version to 3.0.4
update util/finagle/ostrich dependency to 6.0.6
update CHANGELOG

RB_ID=120383
const definition of set type
bump version to 3.0.5-SNAPSHOT
fix wording in CHANGELOG

RB_ID=120750