Add computed columns to soda fountain upsert flow

- Factored out RowDataTranslator from RowDAO and separated out client JSON -> SoQLValue and SoQLValue -> DC JSON
- Computed columns field name must start with colon, this ensures they are treated like system columns in select statements (returned in SELECT :* but not SELECT *). There were a bunch of ways we could have implemented this but based on talks with Marc, Robert, Franklin this had the best tradeoffs for now.
- Tightened up some of the column validations in Soda Fountain (a) Currently 2 columns are allowed to have the same field_name, which creates ambiguity in SoQL SELECT statements. (b) Don't allow client to specify computed column values in an upsert/replace
So you're aware that this match... case block is part of an iterator, which means the code is not going to run in this method, but instead in `addComputedColumns`, right?  Even if it did work, it's pretty hard to reason about....

See this article:
http://stackoverflow.com/questions/12892701/abort-early-in-a-fold

I think instead of a `collect`, we should do a `takeWhile { case Success(x) => true;  case x => <handle error> false }` or something like that.