KUDU-3353 [schema] Add an immutable attribute on column schema (part 2)

This is a follow-up to b6eedb224f715ad86378a92d25f09c2084b0e2b7.
This patch includes the C++ client-side changes of the "new column
attribute IMMUTABLE" feature, including:
1. Adds a new KuduColumnSpec::Immutable() method to add IMMUTABLE
   attribute to a column, and adds a new KuduColumnSpec::Mutable()
   method to remove IMMUTABLE attribute from a column.
2. Adds a new KuduColumnSchema::is_immutable() to check if the
   attribute is set for a column schema.
3. Adds a  new KuduUpsertIgnore operation in the client API: use the
   newly added KuduTable::NewUpsertIgnore() to create a new instance
   of such operation.
4. Adds unit tests to cover the newly introduced functionality.
5. Small refactoring on the server side.

Change-Id: Id301e313eedd9cc3a494d6b4f3c14fbabe63b436
Reviewed-on: http://gerrit.cloudera.org:8080/18835
Tested-by: Yingchun Lai <acelyc1112009@gmail.com>
Reviewed-by: Alexey Serbin <alexey@apache.org>
21 files changed