Observable implementation for Swift, supporting 2-way data binding and KVO