What is Hexagonal Architecture and its practical applications?