Merge change Idd16976f into eclair

* changes:
  Fix some metadata retriever issues: 1. mRetriever was initialized twice: one in the constructor and the other in the setDataSource 2. cached the mode so that setMode can still be called before setDataSource.    mRetriever won't be initialized until data source is set; thus we have to do this