Found a compromise

1. Allow dynamic branch to minimize shader variations - now there's only
one tech per effect, which works around the runtime technique selection
problem.
2. Input layout is created at effect loadtime, by reading tech
annotation <string VertexFormat="...";>, which is a must-have attribute
for the main technique.