Parlour/Sqoop Integration

I don't think options should be mutable, to me it seems reasonable that one would want to do:

```scala
val common = options.username(???).password(???).connectionString(???)
val tableA    = common.tableName("A")
val tableB    = common.tableName("B")
```

I think every time an option is set it should return a new instance of the options object. I raise CommBank/parlour#19. In the mean time can we change the code so that it would work with the immutable approach as well.

```scala
val common = options.connectionString(???)
....

val finalOptions = whereCondition.cata(common.where, common) // cata is in Scalaz an is the same as whereConditions.map(common.where).getOrElse(common)
```