[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.
can you add some javadoc explaining what this method is for?

e.g. is it for getting local blocks or remote blocks? In what condition does it return Some(buf) vs None?