Shell to buy back $3.5bn of shares as profits beat expectations