Behavioural Types: from Theory to Tools