CDK-347. Implement DatasetTarget#handleExisting and WriteMode support.

@ben-roling, good points about not looking for data in directories, but instead seeing if the directories themselves exist. I agree.

The use case for views as targets is to guarantee that you don't write outside the view. We discussed this here: https://issues.cloudera.org/browse/CDK-233. However, the notion of view existence is slippery, so for this issue at least I think we could only allow `append` for views that aren't top-level datasets or filesystem partitioned. I've pushed an update that does this.

Going further, I think we should consider a [suggestion](https://issues.cloudera.org/browse/CDK-177?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=19466#comment-19466) I made a while back about having a PartitionedDataset class that is a subclass of Dataset for partition-specific methods. This would allow us to have both concepts of view and partition in the API, which is good as my feeling is that we need both since we keep talking about both of them...