'Shrek' spinoff 'Puss in Boots' tops box office