BP facing accusations of a "self-serving" whitewash after it blames mistakes by contractors for Gulf of Mexico oil spill