BP settles with US for $4.5 billion in Gulf spill