Liberal Democrat Sarah Olney clinched Zac Goldsmith’s former Richmond Park seat in an extraordinary by-election win.