This is beyond ridiculous...

Color kernel which works with padding is still quite simple. I think we have extra 10-50 lines of code to handle padding in coloredcoinlib. Essentially we have a couple of lines like this :

    value_wop = tx.outputs[oi].value - padding

(value_wop means "value without padding").
And then we have like 10 lines of code which selects padding for a transaction. 

That's not a lot of extra complexity. And it solves the problem once and for all.

What you propose instead: "a different colored coin representing 10 shares, and another one representing 100 shares (like the different denominations of dollar bills)"  is much more complex, and it won't work:

Suppose you have $100 coin, as a single coin. 
How do you send $54.23?
That's simply impossible.

So you'd rather push complexity to higher levels (and create inconvenience for end users, as you admitted yourself) than add 10-50 lines of code to color kernel?
I just do not understand this.

But I'm not going to argue. I already wrote everything which I could write on this topic.