BUG: unstack fails for mixed dtype subset
closes #7405

@jreback ok with this?
 weird that works - 
 there might be a better way to fix it ... i'll look a little deeper
 this way makes more sense, since we want the result of an unstack op to return the requested levels taking into account the labels ... before this fix, wasn't doing that if the unstack index result was a single level (coming from a multiindex)
 do u have an indexer? this is better done with take (though what u r doing should work if the level is unique I think)
 if i understand what you mean by indexer then yes `result_labels` is a list of labels for each level that are indexer for the level
 @jreback this ok? the length check is really only for the one case ... feels a bit strange, but i couldn't see another place to put the fix ... welcome a suggestion
 you can't just use `take` because there could be `nan`s in `result_labels`, in all other cases (so far) the length is equal, i guess in theory u could still have a `nan` if the lengths aren't equal
 let me see if i can come up with a test for that last case
 I guess it's fine

though maybe could add some tests to try to break it
 looks ok...squash and merge
 i'm not totally sure this is the best way to go about this .. i'll spend some time this weekend trying to break my impl
 @cpcloud status?
 was originally closed by #9292 
