API CHANGE TO SUMAC: ignore vals and private fields

Summary:
There were two problems w/ the way Sumac used to decide which fields to turn into arguments:
1) there was no way to ignore some fields (even those marked private were included)
2) vals were turned into args.

(2) is up for debate, but I think its the right thing.  It actually used to work -- because
it was setting fields w/ low-level java Field API, it bypassed the scala restrictions on
updating a val.

Note that the Sumac design allows individual shops to change this by extending FieldArgs w/
their own def of validField.

Test Plan: unit tests pass, after modifying all vals to vars.  We'll need to do the same to our code

Reviewers: karthik, matt, ryan, sukrit, erich

CC: andy, brian, kevin

Differential Revision: http://bugs.quantifind.com/D162
add Ignore annotation to make Sumac ignore some fields
fix some stylistic things per Ryans comments