Gillian, Part I: A Multi-language Platform for Symbolic Execution