An undefeated English castle in South Wales: Haverfordwest withstood 300 years of attacks by Welsh tribes