William Staveley (admiral)