Shell takes $22bn hit over low oil prices