Replace BaseExternalTask.build_architecture with an input field

See !2764 (comment 728907)

the build_architecture() method can be replaced with a task input field, which could lookup the fallback value using the database if needed and, after #1346 (closed), also persist the computed value in dynamic task data