Make DataSink::Close() idempotent

PlanFragmentExecutor may call DataSink::Close() twice. This also adds
a DCHECK to NativeUdfExpr::Close(), which should not be called twice
since UDF close functions are not required to be idempotent.

Change-Id: I37e193a8c96135fe4e03e346409fea4aa03665df
Reviewed-on: http://gerrit.ent.cloudera.com:8080/1978
Reviewed-by: Skye Wanderman-Milne <skye@cloudera.com>
Tested-by: jenkins