William Staveley (Admiral)