Use function

Add a way to change submodels on the fly, by passing routing function to use().

Usage example:

```javascript
var ContenModels = {
    signedData: SignedData,
    envelopedData: EnvelopedData
};

var ContentInfo = asn1.define('ContentInfo', function() {
    this.seq().obj(
        this.key('contentType').objid(PKCS7_CONTENT_TYPES),
        this.key('content').optional().explicit(0).use(function () {
            return ContenModels[this.contentType];
       })
    );
});
```
You can easily reproduce it with tests from #16:

git checkout implicit-bug
git checkout master lib