[WIP] data structures for resources

This PR introduced some data structure to represent resources.
@monnand Hmm. So maybe the Add() cannot be put in the interface.
How about this:
```go
func AddTo(r1, r2 Resource) err {
        // Check if r1 and r2 are of the same type.
        switch r1.Type() {
                case quantitative:
                        // Do simple plus on the quantitative value field.
                case categorical:
                        // Do merge on the categorical value field.
                // ... and more types.
        }
}
```
Or if you want to return the "sum" of two resources, you can define something like
```go
func Add(r1, r2 Resource) Resource
```