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
Will you be able to merge two maps of different types, eg. `map[string]string` with `map[int]int`. What will happen? I'm missing a test case for that as well.