Go simple async message bus
Optimise function reflect value
Remove internal context cancel usage, range over channel instead of doing select
Return from goroutine if channel has been closed
Reduce the number of coroutines spawns (now spawn when subscribe) Add close method that unsubscribes all handlers from given topic