[SPARK-2288] Hide ShuffleBlockManager behind ShuffleManager

By Hiding the shuffleblockmanager behind Shufflemanager, we decouple the shuffle data's block mapping management work from Diskblockmananger. This give a more clear interface and more easy for other shuffle manager to implement their own block management logic. the jira ticket have more details.
One thing about this naming is that the block manager technically isn't specific to hashing. For example, we can still do sort-based shuffle using this block manager (although that's unlikely to happen).

@aarondav any thoughts?