Refactor Config labels, fix #286

1.    Fix #286: Fix Config with nil Labels
    
    - Fix nil Label case
    - Remove mergemap.MergeMap() dst auto allocation
    - Improve mergemap tests and its readability
    - Re-enable AddConfigLabels test for Unknown Generic Object having Labels field

1.    Refactor Config obj.Labels to use meta.Accessor

1.    Move mergeMaps() into its own pkg as `pkg/util/mergemap`.MergeInto()

1.    Add Labels and Annotations to MetadataAccessor
    
    cherry-pick(github.com/GoogleCloudPlatform/kubernetes): 28f5d51a5f6975a575d0cd5157c114878deba2ed

1.    meta_test should not depend on runtime.TypeMeta
    
    cherry-pick(github.com/GoogleCloudPlatform/kubernetes): 508724b1f8431b860f3c35607127a41e70f2f0ed
I'm going to check type assignment before nilness. I realized that untyped `nil` is not the same as typed `nil` (eg. represented by `var map[string]string`) in the `reflect` pkg context.