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
This check should happen again at one point. IMHO you should first check validity of both of `srcVal` and `dstVal` then `srcVal` nil-nes and the final check should be type assignment.